import pandas as pd
import os
from datetime import datetime

def insert_after_xxxl(input_path):
    """在XXXL规格后插入新行，生成有序新文件"""
    # 读取原始数据（保留顺序）
    df = pd.read_excel(input_path)

    # 创建结果目录
    output_dir = os.path.join(os.path.dirname(input_path), '处理结果')
    os.makedirs(output_dir, exist_ok=True)

    # 生成带时间戳的新文件名
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    output_path = os.path.join(
        output_dir,
        f"有序插入_{timestamp}_{os.path.basename(input_path)}"
    )

    # 按主商家编码分组处理
    grouped = df.groupby('主商家编码', sort=False)
    new_dfs = []

    for sku, group in grouped:
        # 转换为列表便于插入操作
        rows = group.to_dict('records')
        new_rows = []
        insert_done = False  # 标记是否已插入

        for row in rows:
            new_rows.append(row)
            # 在XXXL行后插入新规格
            if row['第二属性'] == 'XXXL':
                # 插入XXXXL
                new_4xl = row.copy()
                new_4xl.update({
                    "颜色及规格": f"{row['颜色属性']};XXXXL",
                    "第二属性": "XXXXL"
                })
                new_rows.append(new_4xl)

                # 插入XXXXXL
                new_5xl = row.copy()
                new_5xl.update({
                    "颜色及规格": f"{row['颜色属性']};XXXXXL",
                    "第二属性": "XXXXXL"
                })
                new_rows.append(new_5xl)

                insert_done = True

        # 如果该SKU没有XXXL则添加到末尾
        if not insert_done:
            new_rows.extend([
                {
                    **rows[-1],
                    "颜色及规格": f"{rows[-1]['颜色属性']};XXXXL",
                    "第二属性": "XXXXL"
                },
                {
                    **rows[-1],
                    "颜色及规格": f"{rows[-1]['颜色属性']};XXXXXL",
                    "第二属性": "XXXXXL"
                }
            ])

        new_dfs.extend(new_rows)

    # 生成最终DataFrame
    result_df = pd.DataFrame(new_dfs)

    # 保存结果
    result_df.to_excel(output_path, index=False)
    print(f"生成文件：{output_path}")

# 使用示例
insert_after_xxxl('D:/Desk/123/商品资料_backup.xlsx')